package pl.enigmatic.parser.xml;

import org.w3c.dom.Node;

import pl.enigmatic.parser.metadata.Metadata;


// TODO dokończyć i poprawić, ujednolicić z ogólnym kształtem rozszerzeń, póki co nieużywana klaska
public class ReferencePropertyExtension implements XMLParserExtension {

	private final Parser<?> owner;

	ReferencePropertyExtension(final Parser<?> owner) {
		this.owner = owner;
	}

	@Override
	public NodeNameInfo parseNodeName(Node node, ParsingInfo<?> info) {
		if (Metadata.REF.equals(node) && owner.hasContent()) {
			// FIXME - do wyliczeń np. można to zrobić
			return null;
		} else if (info.containsMetadata(Metadata.REF)) { return new NodeNameInfo(""); }
		return null;
	}

	@Override
	public boolean setParsedProperty(Object target, ParsingInfo<?> info, Object value) {
		return true;
	}

	@Override
	public PropertySetter accessor(final String property) {
		return owner.accessor(property);
	}
}
